{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "ULMFiT_fastai_Text_Classification",
      "version": "0.3.2",
      "provenance": [],
      "collapsed_sections": [],
      "include_colab_link": true
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "accelerator": "GPU"
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "view-in-github",
        "colab_type": "text"
      },
      "source": [
        "<a href=\"https://colab.research.google.com/github/prateekjoshi565/ULMFiT_Text_Classification/blob/master/ULMFiT_fastai_Text_Classification.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
      ]
    },
    {
      "metadata": {
        "id": "rsMgf8LLsoOq",
        "colab_type": "text"
      },
      "cell_type": "markdown",
      "source": [
        "Let's install PyTorch and fastai libraries first. You have to repeat this step every time you restart this notebook in colab."
      ]
    },
    {
      "metadata": {
        "id": "9L-mYNWDBB4g",
        "colab_type": "code",
        "outputId": "fc74ef9b-b203-40a9-97ec-0a2c8633a61c",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1131
        }
      },
      "cell_type": "code",
      "source": [
        "!pip install torch_nightly -f https://download.pytorch.org/whl/nightly/cu92/torch_nightly.html\n",
        "!pip install fastai"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Looking in links: https://download.pytorch.org/whl/nightly/cu92/torch_nightly.html\n",
            "Collecting torch_nightly\n",
            "\u001b[?25l  Downloading https://download.pytorch.org/whl/nightly/cu92/torch_nightly-1.0.0.dev20181128-cp36-cp36m-linux_x86_64.whl (576.6MB)\n",
            "\u001b[K    100% |████████████████████████████████| 576.6MB 25kB/s \n",
            "tcmalloc: large alloc 1073750016 bytes == 0x62b52000 @  0x7f6114c162a4 0x591a07 0x5b5d56 0x502e9a 0x506859 0x502209 0x502f3d 0x506859 0x504c28 0x502540 0x502f3d 0x506859 0x504c28 0x502540 0x502f3d 0x506859 0x504c28 0x502540 0x502f3d 0x507641 0x502209 0x502f3d 0x506859 0x504c28 0x502540 0x502f3d 0x507641 0x504c28 0x502540 0x502f3d 0x507641\n",
            "\u001b[?25hInstalling collected packages: torch-nightly\n",
            "Successfully installed torch-nightly-1.0.0.dev20181128\n",
            "Collecting fastai\n",
            "\u001b[?25l  Downloading https://files.pythonhosted.org/packages/1c/67/8dd2051bb7dbde20ecca36215bd3e02ed436b976643078e3cdd41bd0256f/fastai-1.0.30-py3-none-any.whl (132kB)\n",
            "\u001b[K    100% |████████████████████████████████| 133kB 7.7MB/s \n",
            "\u001b[?25hRequirement already satisfied: spacy==2.0.16 in /usr/local/lib/python3.6/dist-packages (from fastai) (2.0.16)\n",
            "Collecting torchvision-nightly (from fastai)\n",
            "\u001b[?25l  Downloading https://files.pythonhosted.org/packages/ca/bd/d0f9a33c81c79710eb7ee428b66869b49a8be16c7f1e446c211a7fbfb7be/torchvision_nightly-0.2.1-py2.py3-none-any.whl (54kB)\n",
            "\u001b[K    100% |████████████████████████████████| 61kB 25.3MB/s \n",
            "\u001b[?25hRequirement already satisfied: cymem==2.0.2 in /usr/local/lib/python3.6/dist-packages (from fastai) (2.0.2)\n",
            "Requirement already satisfied: pandas in /usr/local/lib/python3.6/dist-packages (from fastai) (0.22.0)\n",
            "Requirement already satisfied: numpy>=1.12 in /usr/local/lib/python3.6/dist-packages (from fastai) (1.14.6)\n",
            "Collecting numexpr (from fastai)\n",
            "\u001b[?25l  Downloading https://files.pythonhosted.org/packages/db/ea/efd9e16283637eb5b6c0042b6cc3521f1b9a5b47767ac463c88bbd37670c/numexpr-2.6.8-cp36-cp36m-manylinux1_x86_64.whl (162kB)\n",
            "\u001b[K    100% |████████████████████████████████| 163kB 19.2MB/s \n",
            "\u001b[?25hRequirement already satisfied: scipy in /usr/local/lib/python3.6/dist-packages (from fastai) (1.1.0)\n",
            "Collecting dataclasses (from fastai)\n",
            "  Downloading https://files.pythonhosted.org/packages/26/2f/1095cdc2868052dd1e64520f7c0d5c8c550ad297e944e641dbf1ffbb9a5d/dataclasses-0.6-py3-none-any.whl\n",
            "Requirement already satisfied: matplotlib in /usr/local/lib/python3.6/dist-packages (from fastai) (2.1.2)\n",
            "Requirement already satisfied: thinc==6.12.0 in /usr/local/lib/python3.6/dist-packages (from fastai) (6.12.0)\n",
            "Requirement already satisfied: pyyaml in /usr/local/lib/python3.6/dist-packages (from fastai) (3.13)\n",
            "Requirement already satisfied: requests in /usr/local/lib/python3.6/dist-packages (from fastai) (2.18.4)\n",
            "Requirement already satisfied: regex in /usr/local/lib/python3.6/dist-packages (from fastai) (2018.1.10)\n",
            "Requirement already satisfied: typing in /usr/local/lib/python3.6/dist-packages (from fastai) (3.6.6)\n",
            "Requirement already satisfied: Pillow in /usr/local/lib/python3.6/dist-packages (from fastai) (4.0.0)\n",
            "Collecting fastprogress>=0.1.16 (from fastai)\n",
            "  Downloading https://files.pythonhosted.org/packages/ea/93/b35cabbab4d25a2fdc5cd196114fbe1160451df5cf1459a80781893f3b0f/fastprogress-0.1.16-py3-none-any.whl\n",
            "Collecting bottleneck (from fastai)\n",
            "\u001b[?25l  Downloading https://files.pythonhosted.org/packages/05/ae/cedf5323f398ab4e4ff92d6c431a3e1c6a186f9b41ab3e8258dff786a290/Bottleneck-1.2.1.tar.gz (105kB)\n",
            "\u001b[K    100% |████████████████████████████████| 112kB 24.7MB/s \n",
            "\u001b[?25hRequirement already satisfied: ujson>=1.35 in /usr/local/lib/python3.6/dist-packages (from spacy==2.0.16->fastai) (1.35)\n",
            "Requirement already satisfied: murmurhash<1.1.0,>=0.28.0 in /usr/local/lib/python3.6/dist-packages (from spacy==2.0.16->fastai) (1.0.1)\n",
            "Requirement already satisfied: dill<0.3,>=0.2 in /usr/local/lib/python3.6/dist-packages (from spacy==2.0.16->fastai) (0.2.8.2)\n",
            "Requirement already satisfied: msgpack-numpy<0.4.4 in /usr/local/lib/python3.6/dist-packages (from spacy==2.0.16->fastai) (0.4.3.2)\n",
            "Requirement already satisfied: preshed<2.1.0,>=2.0.1 in /usr/local/lib/python3.6/dist-packages (from spacy==2.0.16->fastai) (2.0.1)\n",
            "Requirement already satisfied: plac<1.0.0,>=0.9.6 in /usr/local/lib/python3.6/dist-packages (from spacy==2.0.16->fastai) (0.9.6)\n",
            "Requirement already satisfied: tqdm in /usr/local/lib/python3.6/dist-packages (from torchvision-nightly->fastai) (4.28.1)\n",
            "Requirement already satisfied: six in /usr/local/lib/python3.6/dist-packages (from torchvision-nightly->fastai) (1.11.0)\n",
            "Requirement already satisfied: pytz>=2011k in /usr/local/lib/python3.6/dist-packages (from pandas->fastai) (2018.7)\n",
            "Requirement already satisfied: python-dateutil>=2 in /usr/local/lib/python3.6/dist-packages (from pandas->fastai) (2.5.3)\n",
            "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.6/dist-packages (from matplotlib->fastai) (0.10.0)\n",
            "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib->fastai) (2.3.0)\n",
            "Requirement already satisfied: wrapt<1.11.0,>=1.10.0 in /usr/local/lib/python3.6/dist-packages (from thinc==6.12.0->fastai) (1.10.11)\n",
            "Requirement already satisfied: msgpack<1.0.0,>=0.5.6 in /usr/local/lib/python3.6/dist-packages (from thinc==6.12.0->fastai) (0.5.6)\n",
            "Requirement already satisfied: cytoolz<0.10,>=0.9.0 in /usr/local/lib/python3.6/dist-packages (from thinc==6.12.0->fastai) (0.9.0.1)\n",
            "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.6/dist-packages (from requests->fastai) (2018.10.15)\n",
            "Requirement already satisfied: chardet<3.1.0,>=3.0.2 in /usr/local/lib/python3.6/dist-packages (from requests->fastai) (3.0.4)\n",
            "Requirement already satisfied: idna<2.7,>=2.5 in /usr/local/lib/python3.6/dist-packages (from requests->fastai) (2.6)\n",
            "Requirement already satisfied: urllib3<1.23,>=1.21.1 in /usr/local/lib/python3.6/dist-packages (from requests->fastai) (1.22)\n",
            "Requirement already satisfied: olefile in /usr/local/lib/python3.6/dist-packages (from Pillow->fastai) (0.46)\n",
            "Requirement already satisfied: toolz>=0.8.0 in /usr/local/lib/python3.6/dist-packages (from cytoolz<0.10,>=0.9.0->thinc==6.12.0->fastai) (0.9.0)\n",
            "Building wheels for collected packages: bottleneck\n",
            "  Running setup.py bdist_wheel for bottleneck ... \u001b[?25l-\b \b\\\b \b|\b \b/\b \b-\b \b\\\b \b|\b \b/\b \bdone\n",
            "\u001b[?25h  Stored in directory: /root/.cache/pip/wheels/f2/bf/ec/e0f39aa27001525ad455139ee57ec7d0776fe074dfd78c97e4\n",
            "Successfully built bottleneck\n",
            "\u001b[31mtorchvision-nightly 0.2.1 has requirement pillow>=4.1.1, but you'll have pillow 4.0.0 which is incompatible.\u001b[0m\n",
            "Installing collected packages: torchvision-nightly, numexpr, dataclasses, fastprogress, bottleneck, fastai\n",
            "Successfully installed bottleneck-1.2.1 dataclasses-0.6 fastai-1.0.30 fastprogress-0.1.16 numexpr-2.6.8 torchvision-nightly-0.2.1\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "metadata": {
        "id": "SA87AbrrBigr",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "# import libraries\n",
        "import fastai\n",
        "from fastai import *\n",
        "from fastai.text import * \n",
        "import pandas as pd\n",
        "import numpy as np\n",
        "from functools import partial\n",
        "import io\n",
        "import os"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "r9SHCfiABlcF",
        "colab_type": "code",
        "outputId": "b5cf28cd-f5a5-4dfb-e19a-07d569b4c991",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 52
        }
      },
      "cell_type": "code",
      "source": [
        "#import dataset\n",
        "from sklearn.datasets import fetch_20newsgroups\n",
        "dataset = fetch_20newsgroups(shuffle=True, random_state=1, remove=('headers', 'footers', 'quotes'))\n",
        "documents = dataset.data"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Downloading 20news dataset. This may take a few minutes.\n",
            "Downloading dataset from https://ndownloader.figshare.com/files/5975967 (14 MB)\n"
          ],
          "name": "stderr"
        }
      ]
    },
    {
      "metadata": {
        "id": "Xvs8MygLEKri",
        "colab_type": "code",
        "outputId": "0e663976-3d24-4df5-cbbd-d657922e981b",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 364
        }
      },
      "cell_type": "code",
      "source": [
        "dataset.target_names"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "['alt.atheism',\n",
              " 'comp.graphics',\n",
              " 'comp.os.ms-windows.misc',\n",
              " 'comp.sys.ibm.pc.hardware',\n",
              " 'comp.sys.mac.hardware',\n",
              " 'comp.windows.x',\n",
              " 'misc.forsale',\n",
              " 'rec.autos',\n",
              " 'rec.motorcycles',\n",
              " 'rec.sport.baseball',\n",
              " 'rec.sport.hockey',\n",
              " 'sci.crypt',\n",
              " 'sci.electronics',\n",
              " 'sci.med',\n",
              " 'sci.space',\n",
              " 'soc.religion.christian',\n",
              " 'talk.politics.guns',\n",
              " 'talk.politics.mideast',\n",
              " 'talk.politics.misc',\n",
              " 'talk.religion.misc']"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 9
        }
      ]
    },
    {
      "metadata": {
        "id": "A3zbA9rfCfRh",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "# create a dataframe\n",
        "df = pd.DataFrame({'label':dataset.target,\n",
        "                   'text':dataset.data})"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "lifPA3p6C853",
        "colab_type": "code",
        "outputId": "08f8ee3b-ef12-450d-b901-06f852c50320",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "cell_type": "code",
      "source": [
        "df.shape"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "(11314, 2)"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 8
        }
      ]
    },
    {
      "metadata": {
        "id": "1P5OelaiCmna",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "df = df[df['label'].isin([1,10])]\n",
        "df = df.reset_index(drop = True)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "6zbrKEr7C419",
        "colab_type": "code",
        "outputId": "885cc803-cce2-4161-ff81-95d1aa95101e",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 69
        }
      },
      "cell_type": "code",
      "source": [
        "df['label'].value_counts()"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "10    600\n",
              "1     584\n",
              "Name: label, dtype: int64"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 11
        }
      ]
    },
    {
      "metadata": {
        "id": "_SXRszhllc-E",
        "colab_type": "text"
      },
      "cell_type": "markdown",
      "source": [
        "### Preprocessing"
      ]
    },
    {
      "metadata": {
        "id": "THgv8hHrC8wD",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "df['text'] = df['text'].str.replace(\"[^a-zA-Z]\", \" \")"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "Uxc4Yd76Dw73",
        "colab_type": "code",
        "outputId": "5c53bc0e-2b4c-46c9-deeb-a4f48fc51639",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 69
        }
      },
      "cell_type": "code",
      "source": [
        "import nltk\n",
        "nltk.download('stopwords')"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "[nltk_data] Downloading package stopwords to /root/nltk_data...\n",
            "[nltk_data]   Unzipping corpora/stopwords.zip.\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "True"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 13
        }
      ]
    },
    {
      "metadata": {
        "id": "IqG4He_qD1HW",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "from nltk.corpus import stopwords \n",
        "stop_words = stopwords.words('english') "
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "UmZQe0z9D31M",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "# tokenization \n",
        "tokenized_doc = df['text'].apply(lambda x: x.split())\n",
        "\n",
        "# remove stop-words \n",
        "tokenized_doc = tokenized_doc.apply(lambda x: [item for item in x if item not in stop_words]) \n",
        "\n",
        "# de-tokenization \n",
        "detokenized_doc = [] \n",
        "for i in range(len(df)): \n",
        "    t = ' '.join(tokenized_doc[i]) \n",
        "    detokenized_doc.append(t) \n",
        "df['text'] = detokenized_doc"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "MK_i0X2kD6AC",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "from sklearn.model_selection import train_test_split\n",
        "\n",
        "# split data into training and validation set\n",
        "df_trn, df_val = train_test_split(df, stratify = df['label'], test_size = 0.4, random_state = 12)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "IYEFCrJOEHSG",
        "colab_type": "code",
        "outputId": "c579c517-82d5-427b-d87b-acbbda0c9525",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "cell_type": "code",
      "source": [
        "df_trn.shape, df_val.shape"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "((710, 2), (474, 2))"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 55
        }
      ]
    },
    {
      "metadata": {
        "id": "xvvFWWM4ljoH",
        "colab_type": "text"
      },
      "cell_type": "markdown",
      "source": [
        "### Data Preparation"
      ]
    },
    {
      "metadata": {
        "id": "7tNP_aMTEOKe",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "# Language model data\n",
        "data_lm = TextLMDataBunch.from_df(train_df = df_trn, valid_df = df_val, path = \"\")\n",
        "\n",
        "# Classifier model data\n",
        "data_clas = TextClasDataBunch.from_df(path = \"\", train_df = df_trn, valid_df = df_val, vocab=data_lm.train_ds.vocab, bs=32)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "8Ua8pmHEEP5N",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "learn = language_model_learner(data_lm, pretrained_model=URLs.WT103, drop_mult=0.7)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "YE3likAPETlz",
        "colab_type": "code",
        "outputId": "58e7044f-0553-4361-deee-8d68b03b9cfb",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 97
        }
      },
      "cell_type": "code",
      "source": [
        "# train the learner object\n",
        "learn.fit_one_cycle(1, 1e-2)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/html": [
              "Total time: 00:34 <p><table style='width:300px; margin-bottom:10px'>\n",
              "  <tr>\n",
              "    <th>epoch</th>\n",
              "    <th>train_loss</th>\n",
              "    <th>valid_loss</th>\n",
              "    <th>accuracy</th>\n",
              "  </tr>\n",
              "  <tr>\n",
              "    <th>1</th>\n",
              "    <th>0.506149</th>\n",
              "    <th>0.289562</th>\n",
              "    <th>0.905063</th>\n",
              "  </tr>\n",
              "  <tr>\n",
              "\n",
              "  </tr>\n",
              "</table>\n"
            ],
            "text/plain": [
              "<IPython.core.display.HTML object>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "metadata": {
        "id": "w3eJMLWDKb9u",
        "colab_type": "code",
        "outputId": "1602811d-51f8-46df-bed8-2a439034d806",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 174
        }
      },
      "cell_type": "code",
      "source": [
        "learn.lr_find()"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/html": [
              "\n",
              "    <div>\n",
              "        <style>\n",
              "        \t/* Turns off some styling */\n",
              "        \tprogress {\n",
              "\n",
              "            \t/* gets rid of default border in Firefox and Opera. */\n",
              "            \tborder: none;\n",
              "\n",
              "            \t/* Needs to be in here for Safari polyfill so background images work as expected. */\n",
              "            \tbackground-size: auto;\n",
              "            }\n",
              "\n",
              "            .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
              "                background: #F44336;\n",
              "            }\n",
              "        </style>\n",
              "      <progress value='3' class='' max='4', style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
              "      75.00% [3/4 00:21<00:07]\n",
              "    </div>\n",
              "    \n",
              "<table style='width:300px; margin-bottom:10px'>\n",
              "  <tr>\n",
              "    <th>epoch</th>\n",
              "    <th>train_loss</th>\n",
              "    <th>valid_loss</th>\n",
              "    <th>accuracy</th>\n",
              "  </tr>\n",
              "  <tr>\n",
              "    <th>1</th>\n",
              "    <th>6.922967</th>\n",
              "  </tr>\n",
              "  <tr>\n",
              "    <th>2</th>\n",
              "    <th>6.915850</th>\n",
              "  </tr>\n",
              "  <tr>\n",
              "    <th>3</th>\n",
              "    <th>6.592143</th>\n",
              "  </tr>\n",
              "  <tr>\n",
              "\n",
              "  </tr>\n",
              "</table>\n",
              "\n",
              "\n",
              "    <div>\n",
              "        <style>\n",
              "        \t/* Turns off some styling */\n",
              "        \tprogress {\n",
              "\n",
              "            \t/* gets rid of default border in Firefox and Opera. */\n",
              "            \tborder: none;\n",
              "\n",
              "            \t/* Needs to be in here for Safari polyfill so background images work as expected. */\n",
              "            \tbackground-size: auto;\n",
              "            }\n",
              "\n",
              "            .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
              "                background: #F44336;\n",
              "            }\n",
              "        </style>\n",
              "      <progress value='0' class='progress-bar-interrupted' max='25', style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
              "      Interrupted\n",
              "    </div>\n",
              "    "
            ],
            "text/plain": [
              "<IPython.core.display.HTML object>"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "stream",
          "text": [
            "LR Finder is complete, type {learner_name}.recorder.plot() to see the graph.\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "metadata": {
        "id": "81fA6MpQKpJw",
        "colab_type": "code",
        "outputId": "6bc61ee5-d30f-4707-f68d-159b89932e0e",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 361
        }
      },
      "cell_type": "code",
      "source": [
        "learn.recorder.plot()"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\nERExGYW3iIiIySi8RURETEbhLSIiYjIKbxEREZNReIuIiJiMwltERMRkFN4iIiImo/AWERExGdMc\nCSoiIiIt1PMWERExGYW3iIiIySi8RURETEbhLSIiYjIKbxEREZNReIuIiJhMrw7v0tJSzjvvPB5/\n/PF2P+fQoUNcccUVXH755fz4xz8mEAgAsGPHDubPn8/8+fNZtWpVvJp80rqy5rFjx3LFFVfEvsLh\ncLya3WldWW+bn/70p9xyyy1d3dQu05U1P/DAAyxevJhFixbxv//7v/Fq8knpynpffvllFixYwKJF\ni/jtb38bryaflK6st76+nquvvpobbrghXs09KZ2p9av+8Ic/sGDBAhYuXMjbb78NgMfj4Uc/+hGX\nXXYZV199NXV1dV3Z5G7Ta8Pb6/Vyxx13MH369A4977777uPyyy/nySefZNCgQaxduxaA2267jTvu\nuIO1a9eye/dufD5fPJp9Urq65vT0dNasWRP7slqt8Wh2p3V1vQDvvfce+/fv7+qmdpmurLm8vJzS\n0lKefvppnnrqKZ5//nkqKyvj1PLO6cp6fT4fd999N48++ihPP/0077//PmVlZXFqeed09d/p22+/\nnTPOOCMeTT1pna21zYEDB3j55Zd58sknWb16Nb/85S8Jh8M89thjTJkyhaeeeopvfetbPPzww13c\n8u7Ra8Pb4XDw8MMPU1BQELuvrKyM73//+1x55ZVcd911NDQ0HPO8TZs2ce655wJwzjnnsHHjRmpq\navB6vYwdOxaLxcI999xDSkpKt9XSXl1Zsxl0db2BQIAHH3yQa6+9tnsK6ISurHnAgAHcd999QEsP\nzTAM0tPTu6eQdurKelNSUli/fj3p6ekYhkF2dnbS9cq6+u/0ypUrkza8O1rrpk2buP/++4+6PWvW\nLBwOB7m5ufTv35+ysjI2btzI3LlzAXP9e/bPem1422w2XC7XUffdcccd/OIXv+Cxxx5jxowZPPHE\nE8c8z+fz4XA4AMjLy6O6upqKigqysrK45ZZbuPTSS3n00Ue7o4QO68qaoSXMli1bxqWXXsof//jH\n+BfQQV1d7+rVq7nsssuSLsC+qqtrhpZ/4L/97W9z3XXXkZaWFt8COqir6237b7tz504qKio47bTT\n4lxBx8Sr3mTU2Vrb1NTUkJubG7udm5tLdXX1Uffn5eVRVVUVnwLizJboBiSTLVu2cNtttwEtwTRu\n3LgT/nzbzrLRaJTy8nJWrVqFy+Vi8eLFzJgxg+HDh8e9zSerszUD3HTTTVx88cUYhsGSJUuYNGnS\nNz4/0Tpb7969e9m2bRvXX389mzZtins7u9LJ/DcGWL58Oddffz1XXHEFEydOZODAgXFra1c42Xr3\n7t3Lf/7nf/Kb3/wGu90et3Z2lZOt10yOV+vHH3/MvffeS0NDAx6Phw8//JDzzjvvmOcer24zvxcK\n769ISUnhT3/6E4ZhxO779NNPueeeewC4++67SU1Npbm5GZfLRWVlJQUFBeTl5TF8+HBycnIAOOOM\nM9i1a5cpwruzNQNcdtllsedMmzaN0tLSpA/vztb71ltvcfDgQRYtWkRjYyO1tbU8/PDD/PCHP0xU\nKe3W2ZoPHTpETU0N48aNIysri4kTJ7J169akD++T+Tt9+PBhli5dyl133cXo0aMT0v6OOpl6zeZ4\ntQKsWbOGTZs28eGHH3L99dcDsG7dOv7xj3/Efqat7oKCAqqrq8nIyDD1e9Frh82PZ9SoUbzzzjsA\nvPTSS2zcuJEJEybEFmQVFhZy5pln8uqrrwLw17/+lVmzZjFw4ECampqoq6sjEonwxRdfcMoppySy\nlHbrbM179uxh2bJlRKNRQqEQJSUlpviw0tl6r7rqKl588UWeeeYZbr/9ds4++2xTBDd0vuba2lpW\nrFhBKBQiHA7z+eefM2TIkESW0i6drRfg5z//OStWrGDs2LEJa39HnUy9ZnO8Wr/OtGnTeOuttwgE\nAlRWVlJVVcWwYcOYMWMGr7zyCmDu96LXniq2bds27rzzTioqKrDZbBQWFnLjjTfym9/8BovFgtPp\n5De/+Q3Z2dlHPa+qqoqbb74Zv99Pv379+OUvf4ndbmfz5s2sXLkSwzCYNWtW7NNfMunqmn/961/z\nwQcfYLFYmDNnTtIt5Orqetts2rSJ5557jl/96lfdXdI36uqaV69ezWuvvUY0GuXss8/mP/7jPxJU\n2fF1Zb3l5eV897vfZfz48bGfu+qqq2ILvZJBV9ZrsVi46qqraGhooLKykuHDh3Pdddd1enV3V+ts\nrV+1Zs0aXnzxRQzD4MYbb2T69Ok0NTXxs5/9jLq6OjIzM/n1r39NRkZGN1bWNXpteIuIiJiVhs1F\nRERMRuEtIiJiMgpvERERk1F4i4iImIzCW0RExGQU3iJJqry8nNmzZ3fra3bV6XAjR45kyZIlsRPn\nFi1axF//+tdvfN6LL75IJBI56dcX6em0w5qIxKxZs6bLftejjz6KzdbyT0xNTQ3f+c53mDJlygmv\ny73//vu54IILsFjUrxA5EYW3iAm9/PLLPP7440SjUXJzc1m5ciU5OTk8+eSTvPDCC9jtdpxOJ7/9\n7W/JzMxkzpw5XHDBBRw4cICbbrqJa6+9lpkzZ7JlyxaamppYvXo1hYWFjBw5ks8//5wHH3yQuro6\nDh8+zL59+5g6dSq33XYbfr+fm2++mYqKCoqKirBarcyYMYOFCxeesL19+vQhPz+f/fv3k5mZye23\n386ePXsIBAKcdtppLF++nPvuu499+/Zx1VVX8cADD7Bjxw5WrVpFNBrFZrNxxx13JP3WrCLdRR9v\nRUzm0KFD/P73v+fRRx/lqaeeYsqUKaxevRoAv9/PI488wuOPP07//v1Zv3597HmDBw+OHfG5e/du\n5s+fzxNPPMHo0aPZsGHDMa+zfft27rvvPtauXcu6deuor69n/fr1hEIhnn32Wf77v/+b9957r11t\n3rZtG1VVVQwdOpT6+npGjhzJE088wbPPPsu7775LaWkpN9xwA9DSY3c6ndx+++3cf//9PP744yxZ\nsoS77rrrZN86kR5DPW8Rk/n000+prq7m6quvBlpOVxowYAAA2dnZ/OhHP8JisVBRUUF+fn7seRMm\nTIh9n5OTE9uLvl+/fsc9t/qMM87AarVitVrJycmhvr6eL774gilTpgCQn59/wrOgr7rqKgzDoKam\nBpfLxe9//3vS0tJwuVwcOnSIxYsX43A4qK6uxu12H/XcXbt2UV1dHdtmOBwOH3MYhUhvpvAWMRmH\nw8H48eNjve02hw8f5s477+Sll14iLy+PO++886jHv7o/u9VqPeqx4+2SfLyfiUQiR81Hn2huum3O\ne8uWLdx8882MGDECaDlQYuvWrTzxxBPYbDbmz59/3Br79evXpXPwIj2Jhs1FTGbcuHFs2bKF6upq\nADZs2MBrr73GkSNHyMnJIS8vj7q6Ot59910CgUCXvvYpp5zCp59+CsCRI0f45JNPvvE548ePZ+bM\nmfzud7+LPW/IkCHYbDa2bdvG/v37Y+00DINQKMTgwYNxu92UlpYC8NFHH/H00093aS0iZqaet0gS\nq62t5YorrojdHjduHDfddBM///nP+fd//3dSUlJwuVzceeed5ObmMmjQIBYsWEBxcTE33HADK1as\n4Kyzzuqy9syfP5+33nqLxYsXM2DAACZNmnRMD/14brzxRi6++GLOP/985s2bxzXXXMOSJUuYOHEi\nP/jBD1i5ciXPPPMMs2bN4nvf+x4PPvggv/71r/n5z3+O0+kE4Be/+EWX1SFidjpVTETarbKykpKS\nEi644AIikQiXXHIJK1asOGo+XUTiTz1vEWm3jIwMXn75ZR555BEMw2D27NkKbpEEUM9bRETEZLRg\nTURExGQU3iIiIiaj8BYRETEZhbeIiIjJKLxFRERMRuEtIiJiMv8fJjqcH5B5yz4AAAAASUVORK5C\nYII=\n",
            "text/plain": [
              "<matplotlib.figure.Figure at 0x7fc8ac4b2860>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "metadata": {
        "id": "x7fO0cuVET8W",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "learn.save_encoder('ft_enc')"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "uSkXI7HJET_r",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "learn = text_classifier_learner(data_clas, drop_mult=0.7)\n",
        "learn.load_encoder('ft_enc')"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "1VaunwDAMmLV",
        "colab_type": "code",
        "outputId": "5a1ebead-fc26-47a9-a792-b24c35081fee",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 496
        }
      },
      "cell_type": "code",
      "source": [
        "learn.lr_find()\n",
        "learn.recorder.plot()"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/html": [
              "\n",
              "    <div>\n",
              "        <style>\n",
              "        \t/* Turns off some styling */\n",
              "        \tprogress {\n",
              "\n",
              "            \t/* gets rid of default border in Firefox and Opera. */\n",
              "            \tborder: none;\n",
              "\n",
              "            \t/* Needs to be in here for Safari polyfill so background images work as expected. */\n",
              "            \tbackground-size: auto;\n",
              "            }\n",
              "\n",
              "            .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
              "                background: #F44336;\n",
              "            }\n",
              "        </style>\n",
              "      <progress value='2' class='' max='3', style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
              "      66.67% [2/3 00:41<00:20]\n",
              "    </div>\n",
              "    \n",
              "<table style='width:300px; margin-bottom:10px'>\n",
              "  <tr>\n",
              "    <th>epoch</th>\n",
              "    <th>train_loss</th>\n",
              "    <th>valid_loss</th>\n",
              "    <th>accuracy</th>\n",
              "  </tr>\n",
              "  <tr>\n",
              "    <th>1</th>\n",
              "    <th>0.694840</th>\n",
              "  </tr>\n",
              "  <tr>\n",
              "    <th>2</th>\n",
              "    <th>1.373170</th>\n",
              "  </tr>\n",
              "  <tr>\n",
              "\n",
              "  </tr>\n",
              "</table>\n",
              "\n",
              "\n",
              "    <div>\n",
              "        <style>\n",
              "        \t/* Turns off some styling */\n",
              "        \tprogress {\n",
              "\n",
              "            \t/* gets rid of default border in Firefox and Opera. */\n",
              "            \tborder: none;\n",
              "\n",
              "            \t/* Needs to be in here for Safari polyfill so background images work as expected. */\n",
              "            \tbackground-size: auto;\n",
              "            }\n",
              "\n",
              "            .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
              "                background: #F44336;\n",
              "            }\n",
              "        </style>\n",
              "      <progress value='0' class='progress-bar-interrupted' max='45', style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
              "      Interrupted\n",
              "    </div>\n",
              "    "
            ],
            "text/plain": [
              "<IPython.core.display.HTML object>"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "stream",
          "text": [
            "LR Finder is complete, type {learner_name}.recorder.plot() to see the graph.\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\nAyp+4z+EZUvpAAAAAElFTkSuQmCC\n",
            "text/plain": [
              "<matplotlib.figure.Figure at 0x7fc8ac4c37b8>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "metadata": {
        "id": "s7GTTw1GMl2F",
        "colab_type": "code",
        "outputId": "c23d2f04-6227-4db5-afac-32bc7b586a0d",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 97
        }
      },
      "cell_type": "code",
      "source": [
        "learn.fit_one_cycle(1, 1e-2)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/html": [
              "Total time: 00:34 <p><table style='width:300px; margin-bottom:10px'>\n",
              "  <tr>\n",
              "    <th>epoch</th>\n",
              "    <th>train_loss</th>\n",
              "    <th>valid_loss</th>\n",
              "    <th>accuracy</th>\n",
              "  </tr>\n",
              "  <tr>\n",
              "    <th>1</th>\n",
              "    <th>0.572245</th>\n",
              "    <th>0.354939</th>\n",
              "    <th>0.894515</th>\n",
              "  </tr>\n",
              "  <tr>\n",
              "\n",
              "  </tr>\n",
              "</table>\n"
            ],
            "text/plain": [
              "<IPython.core.display.HTML object>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    }
  ]
}